home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Frameworks / TransSkel 3.24 / Demos / Pascal Demos / Button / Modeless.p < prev    next >
Text File  |  1996-01-24  |  2KB  |  78 lines

  1. unit Modeless;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Events, QuickDraw, Windows, Dialogs, OSUtils, ToolUtils, ButtonGlobals, TransSkel;
  7.  
  8.  
  9.     procedure SetupModeless;
  10.  
  11. implementation
  12.  
  13.     const
  14.  
  15.         okBtn = 1;
  16.         cancelBtn = 2;
  17.  
  18. {--------------------------------------------------------------------}
  19. { Dialog handling procedures }
  20. {--------------------------------------------------------------------}
  21.  
  22.  
  23.     function Filter (dlog: DialogPtr;
  24.                                     var evt: EventRecord;
  25.                                     var item: Integer): Boolean;
  26.         var
  27.             hilite: Integer;
  28.             ignore: Boolean;
  29.     begin
  30.         Filter := false;
  31.         case evt.what of
  32.             updateEvt: 
  33.                 SkelDrawButtonOutline(SkelGetDlogCtl(dlog, okBtn));
  34.             activateEvt: 
  35.                 begin
  36.                     if (BitAnd(evt.modifiers, activeFlag) <> 0) then
  37.                         hilite := normalHilite
  38.                     else
  39.                         hilite := dimHilite;
  40.                     ignore := SkelSetDlogCtlHilite(dlog, okBtn, hilite);
  41.                     SkelDrawButtonOutline(SkelGetDlogCtl(dlog, okBtn));
  42.                     ignore := SkelSetDlogCtlHilite(dlog, cancelBtn, hilite);
  43.                 end;
  44.             keyDown: 
  45.                 Filter := SkelDlogMapKeyToButton(dlog, evt, item, okBtn, cancelBtn);
  46.         end;
  47.     end;
  48.  
  49.  
  50.     procedure Clobber;
  51.         var
  52.             dlog: DialogPtr;
  53.     begin
  54.         GetPort(dlog);
  55.         HideWindow(dlog);
  56.         DisposeDialog(dlog);
  57.     end;
  58.  
  59.  
  60.     procedure SetupModeless;
  61.         var
  62.             dlog: DialogPtr;
  63.             ignore: Boolean;
  64.     begin
  65.  
  66.         dlog := GetNewDialog(modelessRes, nil, WindowPtr(-1));
  67.         if (dlog = nil) then
  68.             begin
  69.                 SysBeep(1);
  70.                 exit(SetupModeless);
  71.             end;
  72.         ignore := SkelDialog(dlog, @Filter, nil, nil, @Clobber);
  73.  
  74.         ShowWindow(dlog);
  75.         SkelDoEvents(activMask + updateMask);
  76.     end;
  77.  
  78. end.